link

命令

源码编译

mvn compile

编译测试代码

mvn test-compile

编译源码和测试源码进行测试

mvn test

项目打包

mvn package

在项目所在的目录执行指令mvn package可以进行项目打包,打包方式是在项目根目录下的pom.xml文件中的packaging元素定义的,如果定义为jar则打为jar包,如果是war则打为war包,如果是ear则为ear包。如果pom.xml中没有定义packaging元素,则会使用默认值jar。打包后的文件将会放在项目根目录下的target目录下。
打包后的文件名将是在pom.xml文件中定义的artifactId-version的形式,比如在pom.xml中定义的artifactId是hello,定义的version是1.0,则打包后生成的文件的名称将是hello-1.0。

安装jar包到maven的本地仓库

mvn install

TODO

安装当前项目到远程仓库

mvn deploy

清除存放临时文件的target目录

mvn clean

打包资源

如果需要把一些资源文件也一并打包到jar包里面的话,需要在${basedir}/src/main下新建一个resources目录,然后把所有的资源文件都放到这个目录中,这样这些文件都会放到类路径下面。如果需要在测试代码中访问到对应的资源,那么相对的就需要在${basedir}/src/test下新建一个resources目录,然后把相应的资源文件放在这个目录下。

过滤资源文件

有的时候有些资源文件中的值我们需要在编译的时候动态的指定,maven允许我们在建立文件的时候以${property_name}的方式指定,这样当我们进行编译的时候就会自动的把property_name对应的值替换${property_name}。这个property可以是pom.xml中定义的值,也可以是settings.xml中定义的值,也可以是定义在外部属性文件中的值,还可以是系统属性。maven这种动态替换属性值的功能默认是关闭的,如果要打开的话需要在项目的pom.xml文件中指定filtering的值为true.

 <build>  
   <resources>  
     <resource>  
        <directory>src/main/resources</directory>  
        <filtering>true</filtering>  
     </resource>  
   </resources>  
  </build>  

使用pom.xml和settings.xml中的元素element作为属性

我们可以使用pom.xml文件中的element对应的值来作为属性值。在maven中,使用pom来表示pom.xml中的根元素project,所以我们可以使用${pom.name}来表示project元素下面的name元素,使用${pom.version}来表示project元素下面的version元素。有些元素在pom.xml文件中是没有明确定义的,但是那不代表它们不存在,这是因为它们有一个默认值,像这种元素我们也可以直接拿来使用。同样的我们需要使用settings.xml中的元素的时候可以使用settings前缀来关联,如${settings.localRepository}就是在settings.xml中定义的localRepository元素的值。

文件 application.properties

project_name=${pom.name}  
project_version=${pom.version}  
project_modelVersion=${pom.modelVersion}  
project_artifactId=${pom.artifactId}  
settings_localRepository=${settings.localRepository}  

在resources目录下定义了上面文件之后,在命令行模式下进入pom.xml文件所在的那一级目录,也就是项目的根目录,
之后使用mvn compile进行编译,编译后可以到target/classes目录下找到对应的资源文件,打开可以看到如下内容:

project_name=mavenAppTest  
project_version=1.0-SNAPSHOT  
project_modelVersion=4.0.0  
project_artifactId=mavenApp  
settings_localRepository=D:\\develop\\mavenRepository  

使用外部文件的属性关联

要使用外部文件的属性来关联资源文件里面定义的属性值,那么我们就需要告诉maven应该去哪里找这个属性文件,
这是通过在pom.xml中指定filter的值来指定的。

<build>  
   <filters>  
      <filter>src/main/filters/testFilter.properties</filter>  
   </filters>  
   <resources>  
      <resource>  
        <directory>src/main/resources</directory>  
        <filtering>true</filtering>  
      </resource>  
   </resources>  
  </build>  

在上面代码中我们通过build下面的filters下面的filter元素指定了一个外部用于资源文件过滤的属性文件src/main/filters/testFilter.properties,接着我们在src/main/filters下面建立testFilter.properties文件,
其内容如下:

myFilter.maven.test=test  
myFilter.maven.username=andy

然后我们在resources目录下面定义一个application.properties文件,内容如下:

project_name=${pom.name}  
project_version=${pom.version}  
project_modelVersion=${pom.modelVersion}  
project_artifactId=${pom.artifactId}  
settings_localRepository=${settings.localRepository}  
filter_username=${myFilter.maven.username}  

接下来我们执行mvn process-resources指令来处理资源文件,将在target/classes下面对应的application.properties文件中看到如下内容:

project_name=mavenAppTest  
project_version=1.0-SNAPSHOT  
project_modelVersion=4.0.0  
project_artifactId=mavenApp  
settings_localRepository=D:\\develop\\mavenRepository  
filter_username=andy 

shiyang6017
158 声望59 粉丝